package com.example.supplychainbackend.service;

import com.example.supplychainbackend.controller.dto.blockchain.UploadInfo;
import com.example.supplychainbackend.controller.dto.purchase.*;
import com.example.supplychainbackend.controller.dto.user.UserSigDto;

import java.util.List;

public interface PurchaseService {
    String createPurchaseRequire(PurchaseRequireDto dto);
//    String reviewPurchaseRequire(String id, Integer status);

    String reviewPurchaseRequire(String id, Integer status, UserSigDto sigDto);

    PurchaseRequireDto updatePurchaseRequire(String id, PurchaseRequireDto dto);
    String deletePurchaseRequire(String id);
    PurchaseRequireDto getByIdPurchaseRequire(String id);
    List<PurchaseRequireDto> getListPurchaseRequire();

    List<PurchaseRequireDto> getListPurchaseRequireByEid(String eid);

    String createPurchaseOrder(PurchaseOrderDto dto);
    PurchaseOrderDto updatePurchaseOrder(String id, PurchaseOrderDto dto);
    String deletePurchaseOrder(String id);
    PurchaseOrderDto getByIdPurchaseOrder(String id);
    List<PurchaseOrderDto> getListPurchaseOrder();

    List<PurchaseOrderDto> getListPurchaseOrderByEid(String eid);

    String createPurchaseMaterial(PurchaseMaterialDto dto);
    PurchaseMaterialDto updatePurchaseMaterial(String id, PurchaseMaterialDto dto);
    String deletePurchaseMaterial(String id);
    PurchaseMaterialDto getByIdPurchaseMaterial(String id);
    List<PurchaseMaterialDto> getListPurchaseMaterial();

    String createPurchaseContract(PurchaseContractDto dto);
    PurchaseContractDto updatePurchaseContract(String id, PurchaseContractDto dto);
    String deletePurchaseContract(String id);
    PurchaseContractDto getByIdPurchaseContract(String id);
    PurchaseContractListDto getListPurchaseContract();

    UploadInfo uploadToChainOrder(String id);

    UploadInfo uploadToChainRequire(String id);
}
